const contactModel=require('../models/contact.js');

class ContactController {
    static getContact=async (req, res) => {
        const info = await contactModel.findOne();
        if (info) {
            res.render('contact', {info: info});
        } else {
            res.render('contact', {info: {}});
        }
    };

    //入库
    static putInStore=(req, res) => {
        // 完成多文件上传功能
        let companyPic='';
        if(req.file){
            companyPic=req.file.filename;
        }

        // 完成单图片上传  post请求中需设定为 upload.single('logo')
        // let logo='';
        // if (req.file){
        //     logo=req.file.filename;
        // }

        // console.log(req.body);//就是post提交的数据，把数据库入库到数据库中
        let {_id, companyName, address, phoneNumber,email,zipCode} = req.body;
        //存在即更新操作，否则添加操作
        if (_id) {
            contactModel.findById(_id, (error, data) => {
                if (error) {
                    res.send('updata failure!');
                    return;
                } else {
                    data.companyName = companyName;
                    data.address = address;
                    data.phoneNumber = phoneNumber;
                    data.email = email;
                    data.zipCode = zipCode;
                    data.companyPic = companyPic;

                    let error = data.validateSync();//验证表单是否合法
                    if (error) {
                        // 如果有错误，将错误信息给用户
                        const errorRs = [];
                        for (let attr in error.errors) {
                            errorRs.push(`${contactModel.fields[attr]}: ${error.errors[attr]}`);
                        }
                        //将错误信息返回给前台用户。单独封装一个错误页面 提示用户
                        let url = '/admin/contact';
                        let time = 5;
                        res.render('error', {errorRs, url, time});
                        return;
                    } else {
                        data.save((error, data) => {
                            if (error) {
                                console.log(error);
                                res.redirect('/admin/contact');
                            } else {
                                console.log(data);
                                /*redirect翻译过来叫做重定向，也可以理解为跳转。参数就是我们跳转的地址*/
                                res.redirect('/admin/contact');

                            }
                        });
                    }
                }
            })
        } else {
            let contactObj = new contactModel({
                companyName,
                address,
                phoneNumber,
                email,
                zipCode,
                companyPic,
            });
            // 通过这个方法，可以调用我们在模型里面定义好的验证规则进行处理
            let error = contactObj.validateSync(); //默认行为，代表一旦出错，代码终止
            //如果验证没出错 ，error为undefined，否则返回错误信息
            if (error) {
                // 如果有错误，将错误信息给用户
                const errorRs = [];
                for (let attr in error.errors) {
                    errorRs.push(`${contactModel.fields[attr]}: ${error.errors[attr]}`);
                }
                //将错误信息返回给前台用户。单独封装一个错误页面 提示用户
                let url = '/admin/contact';
                let time = 5;
                res.render('error', {errorRs, url, time});
            } else {
                contactObj.save((error, data) => {
                    if (error) {
                        console.log(error);
                        res.redirect('/admin/contact');
                    } else {
                        console.log(data);
                        res.redirect('/admin/contact');
                    }
                });
            }
        }

    }
}
module.exports=ContactController;